/*====================================================================================================*/
/*====================================================================================================*/
#include "drivers\stm32f4_system.h"
#include "algorithms\string.h"
/*====================================================================================================*/
/*====================================================================================================*
**函數 : num2Char
**功能 : Number to string
**輸入 : type, lens, *pChar, number
**輸出 : None
**使用 : num2Str(type, lens, pChar, number);
**====================================================================================================*/
/*====================================================================================================*/
void num2Str( StringType type, uint8_t lens, char *pStr, int32_t number )
{
  uint8_t i = 0;
  uint32_t tmpStr[48] = {0};
  uint32_t tmpNum = 1;

  switch(type) {

    case Type_B:
    case Type_O:
    case Type_D:
    case Type_H:
      for(i = 0; i < lens; i++) {
        tmpStr[i] = ((uint32_t)number) / tmpNum;
        tmpNum = tmpNum * type;
      }
      for(i = 0; i < lens; i++) {
        pStr[lens-i-1] = tmpStr[i] - tmpStr[i+1] * type;
        if(pStr[lens-i-1] > 9)
          pStr[lens-i-1] += 55;	// 65-10
        else
          pStr[lens-i-1] += 48;
      }
      pStr[lens] = '\0';
    break;

    case Type_I:
      if(number < 0) {
        pStr[0] = '-';
        number = (~number) + 1;
      }
      else {
        pStr[0] = '+';
      }
      for(i = 1; i < lens + 1; i++) {
        tmpStr[i-1] = ((uint32_t)number) / tmpNum;
        tmpNum = tmpNum * 10;
      }
      for(i = 1; i < lens + 1; i++) {
        pStr[lens-i+1] = tmpStr[i-1] - tmpStr[i] * 10;
        pStr[lens-i+1] += 48;
      }
      pStr[lens+1] = '\0';
      break;

    case Type_F:
      break;
  }
}
/*====================================================================================================*/
/*====================================================================================================*
**函數 : lenOfStr
**功能 : String Lens
**輸入 : *pStr
**輸出 : strLens
**使用 : strLens = lenOfStr("Hello World!!");
**====================================================================================================*/
/*====================================================================================================*/
uint16_t lenOfStr( char *pStr )
{
  uint16_t strLens = 0;

  if(pStr == NULL)
    return strLens;

  while(*(pStr++))
    strLens++;

  return strLens;
}
/*====================================================================================================*/
/*====================================================================================================*/
